SFTP 客户端 PRO
需要 Scripting PRO
SFTPClient 用于通过 SSH 连接访问远程文件系统,基于 SFTP 协议。
它提供目录操作、文件操作、路径解析等能力,并可通过 openFile() 获得更强大的 SFTPFile 对象执行读取、写入等低层操作。
该类实例通常由:
1const sftp = await ssh.openSFTP()
返回。
属性
readonly isActive: boolean
指示当前 SFTP 连接是否仍然有效。
true:连接仍然处于活跃状态
false:连接已关闭或发生错误
方法
close(): Promise<void>
关闭当前 SFTP 连接。
返回值:
Promise<void>:关闭成功后 resolve
示例:
readDirectory(atPath: string): Promise<DirectoryEntry[]>
读取指定目录下的文件与子目录。
参数:
返回值:
DirectoryEntry[] 数组,结构如下:
1{
2 filename: string
3 longname: string
4 attributes: {
5 size?: number
6 userId?: number
7 groupId?: number
8 accessTime?: Date
9 modificationTime?: Date
10 permissions?: number
11 }
12}[]
示例:
1const items = await sftp.readDirectory("/var/log")
createDirectory(atPath: string): Promise<void>
在指定路径创建一个目录。
参数:
返回值:
Promise<void>:创建成功后 resolve
示例:
1await sftp.createDirectory("/home/user/new-folder")
removeDirectory(atPath: string): Promise<void>
删除一个目录(需为空目录)。
参数:
返回值:
示例:
1await sftp.removeDirectory("/home/user/empty-dir")
rename(oldPath: string, newPath: string): Promise<void>
重命名或移动文件 / 目录。
参数:
返回值:
示例:
1await sftp.rename("/home/user/a.txt", "/home/user/b.txt")
getAttributes(atPath: string): Promise<FileAttributes>
读取文件或目录的信息。
返回值:
1{
2 size?: number
3 userId?: number
4 groupId?: number
5 accessTime?: Date
6 modificationTime?: Date
7 permissions?: number
8}
示例:
1const attrs = await sftp.getAttributes("/etc/hosts")
openFile(filePath: string, flags: SFTPOpenFileFlags | SFTPOpenFileFlags[]): Promise<SFTPFile>
以指定模式打开远程文件,返回 SFTPFile 对象进行读写。
参数:
filePath:文件路径
flags:打开文件的模式,可为单个 flag 或数组
可用的 flag:
"read" | "write" | "append" | "create" | "truncate" | "forceCreate"
返回值:
Promise<SFTPFile>:一个可读写、可关闭的文件对象
示例:
1const file = await sftp.openFile("/home/user/log.txt", ["read"])
2const data = await file.readAll()
3await file.close()
remove(atPath: string): Promise<void>
删除指定路径的文件。
参数:
示例:
1await sftp.remove("/home/user/old.txt")
getRealPath(atPath: string): Promise<string>
解析符号链接、相对路径、~ 等,返回绝对路径。
示例:
1const real = await sftp.getRealPath("~/documents")
使用示例
1const ssh = await SSHClient.connect({
2 host: "192.168.1.10",
3 authenticationMethod: SSHAuthenticationMethod.passwordBased("user", "pass")
4})
5
6const sftp = await ssh.openSFTP()
7
8// 查看目录内容
9const list = await sftp.readDirectory("/home/user")
10
11// 打开文件读取
12const file = await sftp.openFile("/home/user/info.txt", "read")
13const data = await file.readAll()
14await file.close()
15
16// 创建目录
17await sftp.createDirectory("/home/user/new-folder")
18
19// 删除文件
20await sftp.remove("/home/user/temp.txt")
21
22await sftp.close()